public class Test {
    public static void main(String[] args) {
//        int a = 10;
//        long b = 100L;
 //       b = a; // 可以通过译
         // a = b; // 编译失败
         //自动类型转换即：代码不需要经过任何处理，在代码编译时，编译器会自动进行处理。特点：数据范围小的转为数
         //据范围大的时会自动进行。
        int a = 10;
        int b = 20;
        System.out.println("a = " +a+" b = "+b);//结果：a = 10 b = 20
        System.out.println("a + b = "+a + b);//结果：a + b = 1020
        System.out.println(a + b + " a + b");//结果：30 a + b
    }
    public static void mainChar(String[] args) {
        char c1 = 'A';
        char c2 = '1';
        System.out.println(c1);
        System.out.println(c2);
        //注意：java中的字符可以存放整形
        char c3 = '帅';
        System.out.println(c3);
    }
    public static void main1(String[] args) {
//        //神奇代码一：
//        int a = 1;
//        int b = 2;
//        System.out.println(a/b);//会是0.5吗？
////在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.5, 需要使用 double 类型计算.
//        double c = 1;
//        double d = 2;
//        System.out.println(c/d);//输出0.5
        //神奇代码二：
        double num = 1.1;

        System.out.println(num * num); // 输出1.21吗？
        // 执行结果
        //1.2100000000000002
//        注意事项：
//        1. double在任何系统下都占8个字节
//        2. 浮点数与整数在内存中的存储方式不同，不能单纯使用 的形式来计算
//        3. double的包装类型为Double
//        4. double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势
//        必会存在一定的精度误差，因此浮点数是个近似值，并不是精确值。

    }
    public static void mainDouble(String[] args) {
        double a = 10.0;
        System.out.println(a);
//        System.out.println(Double.MAX_VALUE);
//        System.out.println(Double.MIN_VALUE);

    }
    public static void mainByte(String[] args) {
        byte a = 10;
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
    }
    public static void mainShort(String[] args) {
        short a = 10;
        System.out.println(a);
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);
//        注意事项：
//        1. short在任何系统下都占2个字节
//        2. short的表示范围为：-32768 ~ 32767
//        3. 使用时注意不要超过范围(一般使用比较少)
//        4. short的包装类型为Short

    }
    public static void mainLong(String[] args) {
        // 为了区分int和long类型，一般建议：long类型变量的初始值之后加L或者l
        long  a = 0L;
// long型变量所能表示的范围：这个数据范围远超过 int 的表示范围. 足够绝大部分的工程场景使用.
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);
    }
    public static void mainInt(String[] args) {
//        short a =128;
//        byte b =(byte) a;
//        System.out.println(a);
//        System.out.println(b);
//        byte a = 127;  float b = 3.5f;
//        System.out.println(a);
//        System.out.println(b);
//        int a = 10;//定义
//        System.out.println(a);//打印
//        int b;
//        b = 10;
//        System.out.println(b);
        //err
//        int c;//在使用前如果没有赋值，则编译期间会报错
//        System.out.println(c);//可能尚未初始化变量c
//        c = 100;

        //int型变量所能表示的范围
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);

    }
}
